package models

import (
	"time"

	"gorm.io/gorm"
)

// 永远也不要管表的id，而是表的其他唯一标识字段

// Medicine 存储药品的基本信息
// 药品表的唯一标识字段是药品编码
type Medicine struct {
	gorm.Model
	MedicineID   uint   `gorm:"primary_key;auto_increment;not null" json:"medicine_id"` // 药品ID
	MedicineCode string `gorm:"not null;unique" json:"medicine_code"`                   // 药品编码
	Name         string `gorm:"type:varchar(255);not null;uniqueIndex" json:"name"`     // 药品名称
	Category     string `gorm:"type:varchar(100)" json:"category"`                      // 药物类别（中药、西药等）
	// icd10编码也唯一
	ICD10Code    string     `gorm:"type:varchar(50);unique" json:"icd10_code"` // ICD-10标准编码
	Description  string     `gorm:"type:text" json:"description"`              // 药物描述
	DosageForm   string     `gorm:"type:varchar(100)" json:"dosage_form"`      // 剂型
	Strength     string     `gorm:"type:varchar(100)" json:"strength"`         // 规格
	Manufacturer string     `gorm:"type:varchar(100)" json:"manufacturer"`     // 生产厂家
	Price        float64    `gorm:"not null" json:"price"`                     // 单价
	StockLevel   int        `gorm:"not null" json:"stock_level"`               // 库存数量
	ExpiryDate   *time.Time `gorm:"type:date" json:"expiry_date"`              // 有效期
}
